home *** CD-ROM | disk | FTP | other *** search
/ The PC-SIG Library 9 / The PC-SIG Library on CD ROM - Ninth Edition.iso / 501_600 / DISK0579 / DISK0579.ZIP / CHAP14.TXT < prev    next >
Text File  |  1989-12-01  |  15KB  |  355 lines

  1.  
  2.  
  3.  
  4.  
  5.                                                    Chapter 14
  6.                                      COMPLETE SAMPLE PROGRAMS
  7.  
  8.  
  9. Prior to this point, this tutorial has given you many example
  10. programs illustrating a point of some kind, but these have all
  11. been "nonsense" programs as far as being useful.  It would be
  12. a disservice to you to simply quit with only tiny programs to
  13. study, so the following programs are offered to you as
  14. examples of good Pascal programming practice.  They are useful
  15. programs, but they are still short enough to easily grasp
  16. their meaning.  We will discuss them one at a time.
  17.  
  18.  
  19.  
  20. AMORTIZATION TABLE GENERATOR
  21. ____________________________________________________________
  22.  
  23. This is not one program, but five.  Each one is an improvement
  24. on the previous one, and the series is intended to give you
  25. an idea of program development.
  26.  
  27. AMORT1.PAS - This is the bare outline of the amortization
  28.      program.  Although it is an operating program, it doesn't
  29.      do very much. After some thought and planning, the main
  30.      program was written to allow for an initialization, then
  31.      an annual repeating loop. The annual loop would require
  32.      a header, a monthly calculation, and an annual balance.
  33.      Finally, a procedure was outlined for each of these
  34.      functions with a minimum of calculations in each
  35.      procedure. This program can be compiled and run to see
  36.      that it does do something for each month and for each
  37.      year. It has a major problem because it does not stop
  38.      when the loan is payed off but keeps going to the end of
  39.      that year. The primary structure is complete.
  40.  
  41. AMORT2.PAS - This is an improvement over AMORT1. The monthly
  42.      calculations are correct but the final payment is still
  43.      incorrectly done. Notice that for ease of testing, the
  44.      loan variables are simply defined as constants in the
  45.      initialize procedure. To make the procedures easier to
  46.      find, comments with asterisks were added. This program
  47.      is nearly usable.  Compile and run it.
  48.  
  49. AMORT3.PAS - Now we calculate the final payment correctly and
  50.      we have a correct annual header with column headings. We
  51.      have introduced a new variable to be used for an annual
  52.      interest accumulation. This is neat to have at income tax
  53.      time. This program can also be compiled and run.
  54.  
  55. AMORT4.PAS - This program does nearly everything we would like
  56.      it to do. All of the information needed to build the
  57.      table for any loan is now read in from the keyboard,
  58.  
  59.                                                     Page 14-1
  60.  
  61.                                      Complete Sample Programs
  62.  
  63.      greatly adding to the flexibility. After the information
  64.      is available, the monthly payment is calculated in the
  65.      newly added procedure Calculate_Payment.  The annual 
  66.      header has a new line added to include the original loan
  67.      amount and the interest rate in the information. Compile
  68.      and run this program to see its operation.
  69.  
  70. AMORT5.PAS - The only additional feature in this program is
  71.      the addition of a printout of the results. Examining the
  72.      program, you will notice that many of the output
  73.      statements are duplicated with the Lst included for the
  74.      device selection. Compile and run this program, but be
  75.      sure to turn your printer on to get a printout of the
  76.      amortization table you ask for. If you are using TURBO
  77.      Pascal version 3.0, you will need to either comment out
  78.      line 3 or remove it altogether.
  79.  
  80.  
  81.  
  82. TOP DOWN PROGRAMMING
  83. ____________________________________________________________
  84.  
  85. The preceding example is an example of a top-down approach to
  86. programming.  This is where the overall task is outlined, and
  87. the details are added in whatever fashion makes sense to the
  88. designer.  The opposite is a bottom-up programming effort, in
  89. which the heart of the problem is defined and the rest of the
  90. program is built up around it.  In this case, the monthly
  91. payment schedule would probably be a starting point and the
  92. remainder of the program slowly built up around it.  Use
  93. whichever method works best for you.
  94.  
  95. The final program AMORT5.PAS is by no means a program which
  96. can never be improved upon.  Many improvements can be thought
  97. of.  These will be exercises for you if you so desire.
  98.  
  99. 1.   In the data input section, ask if a printout is desired,
  100.      and only print if it was requested. This would involve
  101.      defining a new variable and if statements controlling all
  102.      write statements with Lst as a device selector.
  103.  
  104. 2.   Format the printout with a formfeed every three years to
  105.      cause a neater printout. The program presently prints
  106.      data right across the paper folds  with no regard to the
  107.      top of page.
  108.  
  109. 3.   Modify the program to include semimonthly payments.
  110.      Payments twice a month are becoming popular, but this
  111.      program cannot handle them.
  112.  
  113. 4.   Instead of listing the months as numbers, put in a case
  114.      statement to cause the months to be printed out as three
  115.      letter names. You could also include the day of the month
  116.      when the payment is due.
  117.  
  118.                                                     Page 14-2
  119.  
  120.                                      Complete Sample Programs
  121.  
  122.  
  123. 5.   Any other modification you can think up. The more you
  124.      modify this and other programs, the more experience and
  125.      confidence you will gain.
  126.  
  127.  
  128.  
  129. LIST.PAS, to list your Pascal programs
  130. ____________________________________________________________
  131.  
  132. Since the differences between TURBO Pascal versions are
  133. significant, two files are included here.  If you are using
  134. TURBO Pascal 3.0, rename LIST3.PAS to LIST.PAS, and if you are
  135. using TURBO Pascal 4.0 or 5.x, rename LIST4.PAS to LIST.PAS
  136. before continuing on to the next section.
  137.  
  138. LIST.PAS is a very useful program that you can use to list
  139. your Pascal programs on the printer.  It can only be compiled
  140. with TURBO Pascal because it uses TURBO extensions.  The two
  141. extensions it uses are the string type variable and (in the
  142. case of TURBO Pascal version 3.0), the absolute type variable. 
  143. The absolute type variable in line 14 and the coding in the
  144. Initialize procedure is an example of how you can read in the
  145. parameters given on the command line.
  146.  
  147. If you are using TURBO Pascal 4.0 or 5.x, a completely
  148. different method is used in the Initialize procedure which
  149. should be no problem for you to understand at this point.  To
  150. use this program to print out the last program, for example,
  151. you would enter the following at the DOS prompt LIST
  152. AMORT5.PAS.  This program reads in the AMORT5.PAS from the
  153. command line and uses it to define the input file.  It should
  154. be pointed out that this program cannot be run from a
  155. "compiled in memory" compilation with the TURBO Pascal
  156. compiler.  It must be compiled to a Disk file, and you must
  157. quit TURBO Pascal in order to run it from the DOS command
  158. level.
  159.  
  160. The parameter read from the command line, AMORT5.PAS, is
  161. stored at computer memory location 80(hexadecimal) referred
  162. to the present code segment.  If you didn't understand that,
  163. don't worry, you can still find the input parameter in any
  164. program using the method given in the initialize procedure for
  165. your version of TURBO Pascal.
  166.  
  167. If you do not have TURBO Pascal, but you are using MS-DOS or
  168. PC-DOS, you can still use this program because it is on your
  169. disk already compiled as LIST.EXE, and can be run like any
  170. other .COM or .EXE program.  Note that LIST4.PAS is the
  171. version that is compiled and copied on the distribution disk.
  172.  
  173.  
  174.  
  175.  
  176.  
  177.                                                     Page 14-3
  178.  
  179.                                      Complete Sample Programs
  180.  
  181. TIMEDATE.PAS, to get today's time and date
  182. ____________________________________________________________
  183.  
  184. This is a very useful program as an example of using some of
  185. the extensions of TURBO Pascal if you are using TURBO Pascal
  186. 3.0.  It interrogates the inner workings of DOS and gets the
  187. present time and date for you, provided you entered them
  188. correctly when you turned your computer on.  The procedure
  189. Time_And_Date can be included in any TURBO Pascal version 3.0
  190. program you write to give you the time and date for your
  191. listings.  As an exercise in programming, add the time and
  192. date to the program LIST to improve on its usefulness.
  193.  
  194. The program named TIMEDAT4.PAS does the same thing as the
  195. last, but it works with TURBO Pascal 4.0 or 5.x using the
  196. means of defining a DOS call as it has been revised for the
  197. newer versions.  It turns out to be an almost trivial program
  198. but is still a good illustration of how to use some of the
  199. newer Borland extensions to Pascal.  The observant student
  200. will notice that the time and date procedures have already
  201. been added to LIST4.PAS.
  202.  
  203.  
  204. SETTIME.PAS, a useful utility program 
  205. ____________________________________________________________
  206.  
  207. This program is very interesting in that it changes the date
  208. and time stamp on any file in the current directory.  It is
  209. the program used to set the time and date on all of the files
  210. on the distribution disks included with this tutorial.  It
  211. sets the time to 12:00:00 and the date to Dec 1, 1989 but you
  212. can use it to set any desired time.
  213.  
  214.  
  215. SHAPES3.PAS, an example of menus
  216. ____________________________________________________________
  217.  
  218. This program is not very useful, but it illustrates one way
  219. to handle menus in a Pascal program, but only if you are using
  220. version 3.0 of TURBO Pascal.  Chapter 13 included the
  221. identical program done slightly differently for use with the
  222. TURBO Pascal 4.0 or 5.x compilers.  You can study the
  223. structure and imagine many ways a menu can be used to improve
  224. the usefulness of your own programs.
  225.  
  226.  
  227. OT.PAS, The OAKTREE directory program
  228. ____________________________________________________________
  229.  
  230. This program should be very useful to you, especially if you
  231. have a hard disk.  It will list the entire contents of your
  232. hard disk (or floppy) in a very easy to read and easy to use
  233. form.  The program is documented in the file named OT.DOC. 
  234. It uses many of the TURBO Pascal extensions and will probably
  235.  
  236.                                                     Page 14-4
  237.  
  238.                                      Complete Sample Programs
  239.  
  240. not compile with any other Pascal compiler without extensive
  241. modifications.
  242.  
  243. You will find two versions of the source code for this
  244. program, one named OT3.PAS for use with TURBO Pascal version
  245. 3.0, and another named OT4.PAS for use with versions 4.0 or
  246. 5.x of the TURBO Pascal compiler.  You should rename one of
  247. them OT.PAS for use with your particular compiler.
  248.  
  249. The two versions are different in a number of ways.  The first
  250. version was written for TURBO Pascal version 3.0 and was only
  251. slightly modified for this new version of the tutorial.  The
  252. newer version, OT4.PAS, was modified extensively to use some
  253. of the procedures provided by Borland such as GetDate,
  254. GetTime, FindFirst, and FindNext.  The program for version 4.0
  255. or 5.x is somewhat smaller since the predefined procedures use
  256. fewer characters to perform a given job, and the executable
  257. version shows an even greater reduction in size.  Apparently
  258. Borland has done a very good job in code size reduction with
  259. the introduction of each new version of TURBO Pascal.
  260.  
  261. It would benefit you greatly to study the two versions of
  262. OT.PAS side by side and compare the benefits of using the
  263. predefined procedures.
  264.  
  265. Examine the procedure named Count_Print_Lines in each of the
  266. OT.PAS programs, and you will see a marked difference between
  267. them.  OT3.PAS counts the lines of output, and when it detects
  268. that 55 lines have been output, it makes 11 Writeln calls to
  269. space the paper up to 66 lines.  This works fine for a printer
  270. using continuous form paper, but it doesn't work with a laser
  271. printer that happens to be set to some number other than 66
  272. lines.  For that reason, OT4.PAS uses a form feed after it
  273. detects that 55 lines have been output.  You can choose the
  274. proper OT.PAS program for your compiler and use whichever
  275. paper advance method suits you best.  This is a very useful
  276. program, so you should spend the time necessary to both
  277. understand it and modify it for your own needs.
  278.  
  279. You will find either program to be a good example of linked
  280. lists because they include a sort routine using a dynamically
  281. allocated B-TREE and another sorting routine that uses a
  282. dynamically allocated linked list with a bubble sort.  These
  283. methods are completely defined in Niklaus Wirth's book,
  284. "Algorithms + Data Structures = Programs", a highly
  285. recommended book if you are interested in advanced programming
  286. techniques.
  287.  
  288. It might also be pointed out that both OT3.PAS and OT4.PAS
  289. also makes use of recursive methods for both sorting and
  290. handling subdirectories.  It is definitely an example of
  291. advanced programming methods, and it would be a good vehicle
  292. for your personal study.
  293.  
  294.  
  295.                                                     Page 14-5
  296.  
  297.                                      Complete Sample Programs
  298.  
  299.  
  300. MOST IMPORTANT - Your own programs
  301. ____________________________________________________________
  302.  
  303. Having completed this tutorial on Pascal, you are well on your
  304. way to becoming a proficient Pascal programmer.  The best way
  305. you can improve your skills now is to actually write Pascal
  306. programs.  Another way to aid in your building of skill and
  307. confidence is to study other Pascal programs.  Many
  308. programming examples can be found in computing magazines and
  309. books.  There are many books available devoted entirely to
  310. TURBO Pascal and you would do well to visit your local
  311. bookstore and review a few of them.
  312.  
  313. You already own one of the best books available for reference
  314. if you are using TURBO Pascal.  Although the TURBO Pascal
  315. reference manual is worth very little as a learning tool, it
  316. is excellent as a language reference manual.  Now that you
  317. have completed all 14 chapters of this tutorial, you have a
  318. good grasp of the terminology of Pascal and should have little
  319. trouble reading and understanding your reference manual.  Your
  320. only limitation at this point is your own perseverance and
  321. imagination.
  322.  
  323.  
  324. OBJECT ORIENTED PROGRAMMING
  325. ____________________________________________________________
  326.  
  327. If you are relatively new to programming, it would be good for
  328. you to completely ignore the last two chapters of this
  329. tutorial until you gain some experience with standard Pascal. 
  330. Object oriented programming is a relatively new development,
  331. and although it is a meaningful study, it is totally
  332. unnecessary for small programming projects.  Once your
  333. programs grow to the point where you feel comfortable with a
  334. 1000 line Pascal program, you are ready for a study of this
  335. new packaging technique.  Until then, it may only serve to
  336. confuse you.
  337.  
  338. Whatever your programming level or needs may be, Pascal can
  339. fulfill them and do so in a very elegant way,
  340.  
  341. Happy Programming.
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.                                                     Page 14-6
  355.